/** ==================================================================================== **/
/** 							Set Default values per tutte le dialogs   				 **/
/** ==================================================================================== **/

	/**
	 * Parametri dinamici del template:
	 *  
	 *  1. ngDialogData.title: titolo della finestra di dialogo 
	 *  2. ngDialogData.ico: path dell'icona da mostrare
	 *  3. ngDialogData.message: testo da mostrare nel body della finestra
	 *  4. ngDialogData.isConfirm: true o false a seconda se mostrare la pulsantiera con i buttons "Conferma" e "Annulla" (Popup di conferma) 
	 *  5. ngDialogData.isAlert: true o false a seconda se mostrare la pulsantiera con il button "Ok" (Popup informativa)
	 */
	var ngDialogTemplate =
			"<div class='ngdialog-titlebar'> \
			 	<span class='ngdialog-title'>{{ngDialogData.title}}</span> \
			 </div> \
		     <div class='ngdialog-message'> \
				<img ng-src='{{ngDialogData.ico}}' class='f' /> \
				<p ng-bind-html='ngDialogData.message'></p> \
			 </div> \
		     <div class='ngdialog-buttons' ng-show='ngDialogData.isAlert'> \
			    <button type='button' class='ngdialog-button ngdialog-button-custom' ng-click='closeThisDialog()'> \
			       	Ok \
			    </button> \
			 </div> \
			 <div class='ngdialog-buttons' ng-show='ngDialogData.isConfirm'> \
				<button type='button' class='ngdialog-button ngdialog-button-custom' ng-click='closeThisDialog()'> \
			       	{{ 'Button.annulla' | translate }} \
			    </button> \
			   	<button type='button' class='ngdialog-button ngdialog-button-custom' ng-click='confirmThisDialog()'> \
			   		{{ 'Button.conferma' | translate }} \
			    </button> \
			 </div>";
	
/**
 * USO:
 *  È necessario includere ngDialog.js e ngDialog.css (come configurazione minima) al progetto e poi si può iniziare a utilizzare il provider di 
 *  ngDialog. Nelle vostre direttive, controllori e servizi.
 */
BootApplication.config(['ngDialogProvider', function (ngDialogProvider) {
   ngDialogProvider.setDefaults({
	  /**
	   * Il template può essere caricato attraverso un percorso esterno o tag <script> con testo / ng-modello:
	   * Inoltre è possibile utilizzare una stringa come modello insieme all'opzione plain valorizzata a true.
	   */
	  template: ngDialogTemplate,
	  /**
	   * Se fosse vero permette di utilizzare stringa come modello, per default false
	   */
	  plain: true,
	  /**
	   * Controllore che verrà utilizzato per la finestra di dialogo, se necessario.
	   */
	  controller: ['$scope', function($scope) {
	      // controller logic
		  if($scope.ngDialogData.isConfirm){
			  // confirm function
				if($scope.ngDialogData.confirm != undefined && $scope.ngDialogData.confirm != null ) 
					$scope.confirmThisDialog = $scope.ngDialogData.confirm;
				else 
					$scope.confirmThisDialog = $scope.closeThisDialog;
				
			  // cancel function
				if($scope.ngDialogData.close != undefined && $scope.ngDialogData.close != null )
					$scope.closeThisDialog = $scope.ngDialogData.close;
		  }// is confirm dialog
	  }],
	  /**
	   * Si potrebbe specificare il parametro controllerAs per il controller. Poi all'interno del vostro template sarà possibile segnalare 
	   * questo controllore per il valore specificato da controllerAs.
	   */
	  controllerAs: "",
	  /**
	   * Scope object that will be passed to dialog. If you use controller with separate $scope service this object will be passed 
	   * to $scope.$parent param
	   */
	  scope: null,
	  /**
	   * Any data that you want to be stored in controller's $parent scope, it could be stringified JSON as well.
	   */
	  data: {},
	  /**
	   * Questa opzione permette di customizzare la grafica della finestra, è possibile utilizzare i temi incorporati o creare il proprio stile.
	   */
	  className: 'ngdialog-theme-default',
      /**
       * consente l'aggiunta di una classe
       */
      appendClassName: '',
      /**
       * Se falso permette di nascondere il pulsante di chiusura sulla modali, di default vero.
       */
      showClose: true,
      /**
       * Esso permette di chiudere modale facendo clic sul pulsante Esc, di default vero.
       * Questo chiuderà tutte le modali aperte allo stesso tempo.
       */
      closeByEscape: false,
      /**
       * Esso permette di chiudere modale cliccando su sfondo di sovrapposizione, di default vero.
       */
      closeByDocument: false,
      /**
       * Se fosse vero l'animazione poi per la finestra di dialogo verrà disattivata, di default falso.
       */
      disableAnimation: true,
      /**
       * Se falso permette di nascondere il div sovrapposizione dietro i modelli, di default vero.
       */
      overlay: true,
      /**
       * Permette di chiudere le finestre modali sul cambiamento di stato (history.back, $state.go, ecc), di default falso.
       * Impostare questo valore su false se si desidera non chiuderle, altrimenti impostare il valore a true. Quando è true
       * verranno chiuse tutte le finestre modali aperte allo stesso tempo.
       */
      closeByNavigation: true,
      /**
       * Specificare l'elemento html dove aggiungere la finestra, (ad esempio #Id, .Class). 
       * Se non specificato viene aggiunta al body come comportamento predefinito.
       */
      appendTo: false,
      /**
       * Passare false per disabilitare la cache dei template. Utile per scopi di sviluppo, di default è vero.
       */
      cache: false,
      /**
       * Dare un nome per una finestra di dialogo esempio. È utile per identificare finestra specifica se vi sono più finestre di dialogo aperte.
       */
      name: "ngDialogApp",
      /**
       * Fornire sia il nome di una funzione o una funzione per essere chiamata prima che la finestra di dialogo viene chiusa. 
       * Se la funzione di callback specificato nell'opzione restituisce false allora la finestra di dialogo non verrà chiusa. 
       */
      preCloseCallback: false,
      /**
       * Quando vero, assicura che l'elemento focalizzato rimane all'interno della finestra di dialogo per conformarsi alle raccomandazioni di 
       * accessibilità. Il valore predefinito è vero
       */
      trapFocus: true,
      /**
       * Quando vero, chiusa la finestra ripristina lo stato attivo per l'elemento che l'ha lanciata. 
       * Progettato per migliorare l'accessibilità della tastiera. Il valore predefinito è vero
       */
      preserveFocus: true,
      /**
       * Quando vera, seleziona automaticamente i valori appropriati per un non meglio specificato gli attributi di accessibilità.
       * Il valore predefinito è vero
       */
      ariaAuto: true,
      /**
       * Specifica il valore dell'attributo ruolo che deve essere applicata all'elemento finestra. Il valore predefinito è nullo (non specificata)
       */
      ariaRole: null,
      /**
       * Specifica il valore per l'attributo aria-labelledby che dovrebbe essere applicato all'elemento finestra di dialogo. 
       * Il valore predefinito è nullo (non specificata)
       */
      ariaLabelledById: null,
      /**
       * Specifica il selettore CSS per l'elemento a cui fa riferimento l'attributo aria-labelledby sull'elemento finestra di dialogo. 
       * Il valore predefinito è nullo (non specificata)
       */
      ariaLabelledBySelector: null,
      /**
       * Specifica il valore per l'attributo aria-describedby che dovrebbe essere applicato all'elemento finestra di dialogo. 
       * Il valore predefinito è nullo (non specificata)
       */
      ariaDescribedById: null,
      /**
       * Specifica il selettore CSS per l'elemento a cui fa riferimento l'attributo aria-describedby sull'elemento finestra di dialogo. 
       * Il valore predefinito è nullo (non specificata)
       */
      ariaDescribedBySelector: null,
      /**
       * Class che viene aggiunto al body quando la finestra di dialogo è aperta.
       */
      bodyClassName: 'ngdialog-open',
      /**
       * Questa opzione consente di controllare la larghezza della finestra di dialogo. Il valore predefinito è nullo (non specificata)
       * Se si fornisce un numero, verrà aggiunto 'px' oppure utilizzare , per esempio '40% '.
       */
      width: null
  });
   
}]);
